package com.lh.service;

import com.lh.entity.User;

import java.sql.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: LuoHang
 * @Date: 2021/1/26 15:44
 * @Description
 */

public interface UserService {
    /**
     * 登录
     *
     * @param map 验证登录信息
     * @return 当前登录对象
     */
    User login(Map<String, Object> map);

    /**
     * 注册
     *
     * @param map 注册信息int
     * @return 是否注册成功
     */
    int register(Map<String, Object> map);

    /**
     * 用户更新
     *
     * @param map 需要更新的信息
     * @return int（count影响的行数）是否更新成功
     */
    int update(Map<String, Object> map);

    /**
     * 获取用户列表
     *
     * @param map 角色id 是管理员还是普通用户
     * @return 用户集合对象
     */
    List<User> getUsers(Map<String, Object> map);

    /**
     * 用于分页模糊查询的总记录数
     *
     * @param map 查询条件
     * @return count int 查询得到的结果数量
     */
    int getCount(Map<String, Object> map);

    /**
     * 通过ID查询对应的用户
     * 对应后台的用户信息查看功能
     *
     * @param id 需要获取用户对应的用户ID
     * @return ID对应的用户对象（包含用户的一些可以查看的信息）
     */
    User getUserById(Integer id);

    /**
     * 通过ID删除ID对应的用户
     *
     * @param id 需要删除的用户对应的ID
     * @return count int 影响的行数 是否删除成功
     */
    int deleteUserById(Integer id);

    /**
     * 用户添加
     *
     * @param map 添加用户的信息
     * @return count int 影响的行数
     */
    int addUser(Map<String,Object> map);

    /**
     * 获取不同角色用户的数量
     *
     * @param roleId 角色id
     * @return 数量
     */
    int getRoleUserCount(Integer roleId);

    /**
     * 获取每日新增用户的数量
     *
     * @param gmtCreate 注册时间
     * @return 数量
     */
    int getRegisterCountByDay(Date gmtCreate);
}
